package reflect;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * 课堂练习
 * 使用反射机制调用Person类中所有公开且无参的方法
 */
public class Test {
    public static void main(String[] args) throws Exception {
        /*
            大致步骤:
            1:获取Person的类对象
            2:通过类对象获取Person类中所有公开方法
            3:遍历每一个方法对象,并通过方法对象判断该方法是否为公开且无参的
            4:如果复合步骤三的条件,则使用方法对象调用该方法完成需求
         */
        //1
        Class cls = Class.forName("reflect.Person");
        Object obj = cls.newInstance();
        //2
        Method[] methods = cls.getMethods();
        //3
        for(Method method : methods){
            if(method.getModifiers()== Modifier.PUBLIC
                    &&
               method.getParameterCount()==0){
                //4
                method.invoke(obj);
            }
        }
    }
}








